\documentclass[a4paper,12pt]{report}
\usepackage[T1]{fontenc}				% codifica dei font
\usepackage[utf8]{inputenc}			% codifica di input
\usepackage[italian]{babel}			% trattare le lingue
\usepackage{indentfirst}				% indentazione della prima riga del paragrafo
\usepackage{enumitem}						% personalizzazione degli elenchi
\usepackage{microtype}					% migliora il riempimento delle righe
\usepackage[colorlinks]{hyperref}	% colora i link
\usepackage{booktabs}
\usepackage{hyperref}
\usepackage{tabularx}
%\usepackage{comment}
\usepackage{graphicx}
%\usepackage{caption}
%\usepackage{frontespizio}

\author{Simone Cainero}
\title{Metriche}

% definisco l'ambiente "tabella"
\newenvironment{tabellaX}[2]%
	{\begin{table}{#1}\footnotesize%
		\begin{center}%
			\begin{tabularx}{\textwidth}{#2}}%
			{\end{tabularx}%
		\end{center}%
	\end{table}}

\newenvironment{tabella}[1]%
	{\begin{table}{b}\footnotesize%
		\begin{center}%
			\begin{tabularx}{\textwidth}{#1}}%
			{\end{tabularx}%
		\end{center}%
	\end{table}}


\begin{document}
	\begin{titlepage}
		%\begin{figure}%[htbp]
		%	\centering
		%	\includegraphics[width=0.5\textwidth]{crystal.jpg}
		%\end{figure}

		\begin{center}
			\vspace{1cm}
			\Huge{Crystal Software}
			\vspace{2cm}

			{\fontsize{40}{50}\selectfont Metriche}
		\end{center}

		\begin{table}[b]\begin{center}\begin{tabularx}{\textwidth}{clXl}
			\toprule
			\textbf{Rev.}	& \textbf{Data}	& \textbf{Descrizione}		& \textbf{Autore} \\
			\midrule
			1.0				& 21/12/2012		& Creazione del documento	& Simone Cainero \\
			\bottomrule
		\end{tabularx}\end{center}\end{table}
	\end{titlepage}

	\tableofcontents

	\chapter{Scopo e audience}
	In questo documento si definiscono le metriche di valutazione del prodotto software. Il modello di riferimento è il GQM, che viene utilizzato per stabilire \emph{cosa} misurare e \emph{quale metrica} utilizzare. Ognuna delle metriche utilizzate viene poi descritta in un apposito capitolo. Il documento è destinato ai membri del team che utilizzaranno le metriche qui esposte, quindi nelle fasi di analisi dei costi e di controllo della qualità.

	\chapter{Glossario}
	Di seguito alcuni termini utilizzati nel documento.
	\begin{itemize}
		\item \emph{GQM}: Goal Question Metric.
	\end{itemize}

	\chapter{Goal Question Metric}
		\begin{par}Il ‘‘Goal Question Metric’’ definisce un modello di misura basato su tre livelli:
		\begin{enumerate}
			\item \emph{livello concettuale (obiettivo)}: un obiettivo è definito per un oggetto per una serie di ragioni: per affrontare vari modelli di qualità, da diversi punti di vista e relativi a un particolare ambiente;
			\item \emph{livello operativo (domanda)}: una serie di domande viene utilizzata per caratterizzare la valutazione o il raggiungimento di un obiettivo specifico;
			\item \emph{livello quantitativo (metrica)}: a ogni domanda viene associata un insieme di metriche al fine di rispondere in maniera misurabile.
		\end{enumerate}\end{par}
	
		\section{Obiettivi}
			\begin{par}Sono stati individuati i seguenti obiettivi:
			\begin{enumerate}
				\item calcolo delle dimensioni e della complessità del progetto;
				\item calcolo delle tempistiche che si sono rese necessarie per la realizzazione del progetto.
			\end{enumerate}\end{par}

		\section{Domande e metriche}
			\begin{par}Per ogni obiettivo definito nel paragrafo precedente, si definiscono ora le domande utilizzate per caratterizzare la sua valutazione e le metriche adoperate per rispondere a ciascuna domanda.\end{par}

			\paragraph{Obiettivo 1\newline}
				\begin{par}L'obiettivo 1 riguarda il calcolo delle dimensioni e della complessità del progetto.\end{par}
				\begin{enumerate}
					\item Quanto è grande il software?
					\begin{enumerate}
						\item Numero di Function Points.
						\item Numero di KLOC.
					\end{enumerate}
				\end{enumerate}

			\paragraph{Obiettivo 2\newline}
				\begin{par}L'obiettivo 2 riguarda il calcolo delle tempistiche che si sono rese necessarie per la realizzazione del progetto.\end{par}
				\begin{enumerate}
					\item Quanto tempo è stato necessario per realizzare il progetto?
					\begin{enumerate}
						\item Numero di ore impiegate per l'analisi
						\item Numero di ore impiegate per la progettazione
						\item Numero di ore impiegate per l'implementazione
						\item Numero di ore impiegate per il testing
						\item Numero di ore totali
					\end{enumerate}
					\item Quanto tempo è stato impiegato per le riunioni del team?
					\begin{enumerate}
						\item Numero di riunioni fatte e relativa durata.
					\end{enumerate}
				\end{enumerate}

	\chapter{Function Points}
		\begin{par}In questo capitolo vengono descritte la metrica dei Funtion Points e le sue modalità di utilizzo. Tale metrica, detta metrica di Albrecht, misura l'ammontare di funzioni contenute nel software. La formula per il calcolo dei Function Points $FP$ è la seguente:
			\[
				FP=UFP * TCF
			\]
			dove $UFP$ sono gli Unadjusted Function Points, mentre $TCF$ il Technical Complexity Factor.\end{par}
		
		\section{Unadjusted Function Points}
			\begin{par}Per il calcolo degli Unadjusted Function Points (o \emph{Function Count}, \emph{FC}) ogni funzionalità del software presente nel documento delle specifiche verrà classificato in uno dei seguenti cinque indici:
			\begin{enumerate}
				\item input esterno
				\item output esterno
				\item interrogazione esterna
				\item file logico interno
				\item interfaccia esterna
			\end{enumerate}\end{par}

			\begin{par}Ad ogni funzionalità verrà poi associato un valore di complessità su una scala a tre livelli (bassa, media, alta) secondo la seguente tabella:
			\begin{table}[hu]\begin{center}\begin{tabularx}{\textwidth}{Xccc}
				\toprule
				\textbf{classe}				& \textbf{bassa}	& \textbf{media}	& \textbf{alta} \\
				\midrule
				input esterno					& 3						& 4						& 6 \\
				\midrule
				output esterno				& 3						& 4						& 6 \\
				\midrule
				interrogazione esterna	& 4						& 5						& 7 \\
				\midrule
				file logico interno		& 7						& 10						& 15 \\
				\midrule
				interfaccia esterna		& 5						& 7						& 10 \\
				\bottomrule
			\end{tabularx}\end{center}\end{table}\end{par}
	
			\begin{par}A questo punto gli Unadjusted Function Points si calcolano tramite la seguente formula:
			\[
				UFP=\sum_{i=0}^n val_i
			\]
			dove $val_i$ è il valore di complessità dato all'\emph{i-esima} funzionalità, mentre $n$ è il numero totale di funzioni.\end{par}

		\section{Technical Complexity Factor}
			\begin{par}Il Technical Complexity Factors è il fattore di complessità tecnica dell'applicazione che serve per introdurre nel calcolo dei Function Points un valore di influenza rispetto alle caratteristiche generali del sistema. Il calcolo del Technical Complexity Factors avviene sulla base di 14 caratteristiche del sistema ad ognuna delle quali viene assegnato un valore di influenza, da 0 a 5, a seconda dell'influenza che quella specifica caratteristica ha sulla complessità del sistema. Le 14 caratteristiche sono le seguenti:
			\begin{enumerate}
				\item comunicazione dati
				\item distribuzione dell'elaborazione
				\item prestazioni
				\item utilizzo estensivo della configurzione
				\item frequenza delle transazioni
				\item inserimento dati interattivo
				\item efficienza per l'utente finale
				\item aggiornamento interattivo
				\item complessità elaborativa
				\item riusabilità
				\item facilità di installazione
				\item facilità di gestione operativa
				\item molteplicità delle aree
				\item facilità di modifica
			\end{enumerate}\end{par}

			\begin{par}Il Technical Complexity Factor si calcola tramite la seguente formula:
			\[
				TCF=\sum_{i=1}^{14} val_i
			\]
			dove $val_i$ è il valore di influenza dato all'\emph{i-esima} caratteristica.\end{par}

	\chapter{KLOC}
	\begin{par}In questo capitolo viene descritto come effettuare la stima dell'ammontare di linee di codice del software, misurate in KLOC (kilo line of source). Il calcolo è il seguente:
		\[
			KLOC=(FP\,l)/1000
		\]
		dove \emph{FP} è il numero di Function Points del software e \emph{l} è il valore medio di \emph{KLOC/FP} per il linguaggio di programmazione utilizzato. Tale valore viene estratto dalla seguente tabella di Caper Jones:
			\begin{table}[ht]\begin{center}\begin{tabularx}{\textwidth}{XX}
				\toprule
				linguaggio							& valor medio \emph{KLOC/FP} \\
				\midrule
				C					& 148 \\
				\midrule
				C++				& 60 \\
				\midrule
				Java				& 60 \\
				\midrule
				JavaScript		& 56 \\
				\midrule
				PHP				& 56 \\
				\bottomrule
			\end{tabularx}\end{center}\end{table}\end{par}

%TDEV=[3,0*(Effort)(0,11+0,2*(B–1,01)) ]*(%SCED/100)


\end{document}
